﻿/*
 * Script: "mapa_buscador_tax.js"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */
 
 
// Inicialización de Variables
var map_buscador_tax	= null;
var markersArray 		= [];
var circleTurno			= null;
var infoBubbleTurnob 	= null;

var bounds			= null;

// Parametros del Circulo
var radio			= 50;			// Radio de la Circunferencia KM

// Variables donde se guardan los datos de los Resultados a mostrar
var lista_id_linea 			= null;
var lista_coord_x 			= null;
var lista_coord_y 			= null;
var lista_nombre 			= null;
var lista_fecha_apertura 	= null;
var lista_unidades 			= null;
var lista_rif 				= null;
var lista_razon_social 		= null;


// =================================================================================================================
// ==================================================== BUSCADOR ===================================================
// =================================================================================================================

function buscador_tax( opcion ) {
	
	// Creamos el Mapa
	var centerPoint = new google.maps.LatLng( parseFloat(mapa_coord_x).toFixed(8), parseFloat(mapa_coord_y).toFixed(8) );
	var myOptions = {
		zoom: parseInt(mapa_zoom),
		zoomControlOptions: {
      		style: google.maps.ZoomControlStyle.LARGE
    	},
		center: centerPoint,
		panControl: true,
		mapTypeControl: false,
		scaleControl: true,
		streetViewControl: false,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	map_buscador_tax = new google.maps.Map(document.getElementById("mapa_buscador_tax"), myOptions);
	
	google.maps.event.addListener(map_buscador_tax, 'click', function(event) {
		
		// Limpiamos el Mapa
		clearOverlays();
		if ( circleTurno != null ) {
			circleTurno.setMap(null);	
		}
		
		bounds = map_buscador_tax.getBounds();
		
		// Sacamos las Coordenadas porque no podemos pasar el Punto
		coord_x_c = event.latLng.lat();
		coord_y_c = event.latLng.lng();
		
		xajax_buscador_tax_xajax(radio, coord_x_c, coord_y_c, opcion);
	});
}


// =================================================================================================================
// ================================================= PINTAR CIRCULO ================================================
// =================================================================================================================

// (El circulo representa el Area de Busqueda y esta definido por un radio fijo)

function pintar_circulo(coord_x_c, coord_y_c, radio) {
	
	// Armamos el Punto ya que no se puede pasar como parametro (es un Objeto)
	var point = new google.maps.LatLng( coord_x_c.toFixed(8), coord_y_c.toFixed(8) );
	
	// Agregamos el Circulo al mapa
	var circle = new google.maps.Circle({
		radius: (radio*1000),
		map: map_buscador_tax,
		center: point,
		strokeColor: color_menu,		// Color de la Linea de Borde del Circulo
		strokeOpacity: 1,				// Opacidad del Linea de Borde
		strokeWeight: 1,				// Ancho de la Linea de Borde
		fillColor: "#FFFF00",			// Color del Relleno del Circulo: Amarillo
		fillOpacity: 0.4				// Opacidad del Relleno del Circulo
	});
	
	circleTurno = circle;
	
	// Guardamos los valores del Area de Busqueda
	map_buscador_tax.fitBounds(circle.getBounds());
}


// =================================================================================================================
// ========================================= INICALIZAR LOS DATOS DEL MAPA =========================================
// =================================================================================================================

function inicializar_datos() {
	
	var h_ls_coord_x 			= document.getElementById("h_ls_coord_x").value;
	lista_coord_x 				= h_ls_coord_x.split( "/*" );
	
	var h_ls_coord_y 			= document.getElementById("h_ls_coord_y").value;
	lista_coord_y 				= h_ls_coord_y.split( "/*" );
	
	var h_ls_nombre 			= document.getElementById("h_ls_nombre").value;
	lista_nombre 				= h_ls_nombre.split( "/*" );
	
	var h_ls_fecha_apertura		= document.getElementById("h_ls_fecha_apertura").value;
	lista_fecha_apertura 		= h_ls_fecha_apertura.split( "/*" );
	
	var h_ls_unidades 			= document.getElementById("h_ls_unidades").value;
	lista_unidades 				= h_ls_unidades.split( "/*" );
	
	var h_ls_rif				= document.getElementById("h_ls_rif").value;
	lista_rif 					= h_ls_rif.split( "/*" );
	
	var h_ls_razon_social 		= document.getElementById("h_ls_razon_social").value;
	lista_razon_social 			= h_ls_razon_social.split( "/*" );
}


// =================================================================================================================
// ================================================ VERIFICAR Y PINTAR =============================================
// =================================================================================================================

function verificar_y_pintar(radio, lng, lat, opcion) {
	
	// Inicializamos los InfoBubbles
	var infowindow_div_linea_tax_buscador 		= document.getElementById('infowindow_div_linea_tax_buscador').innerHTML;
	var infowindow_div_datos_emp_buscador 		= document.getElementById('infowindow_div_datos_emp_buscador').innerHTML;
	
	// Parseamos los Posibles Resultados
	var h_ls_id_linea 			= document.getElementById("h_ls_id_linea").value;
	lista_id_linea 				= h_ls_id_linea.split( "/*" );
	
	if ( lista_id_linea.length >= 1 ) {
		
		// Inicializamos los Datos a Pintar
		inicializar_datos();
		
		// Coordenada del Centro del Area de Busqueda
		var centro = new google.maps.LatLng( parseFloat(lng).toFixed(8), parseFloat(lat).toFixed(8) );
		
		// Inicializamos y Seteamos las Variables de los Marcadores
		var turno;
		var distancia_turno;
		var h_ls_tabla_tax = "";
		
		// Para todos los Posibles Resultados
		for ( var j = 0; j < lista_id_linea.length; j++ ) {
			
			// Coordenada del Posible Resultado de Turno
			turno = new google.maps.LatLng( parseFloat(lista_coord_x[j]).toFixed(8), parseFloat(lista_coord_y[j]).toFixed(8) );
			
			distancia_turno = (google.maps.geometry.spherical.computeDistanceBetween( centro, turno ) / 1000).toFixed(3);
			
			// Si la Línea esta dentro del Area de Busqueda
			if (radio > distancia_turno) {
				
				h_ls_tabla_tax = h_ls_tabla_tax + lista_id_linea[j] + "," + distancia_turno + ";";
				
				// Obtenemos los atributos de cada Marcador
				var point 	= turno;
				
				icono_marker = "../../publico/imagenes/mapa/taxi.png";
				image = new google.maps.MarkerImage( icono_marker,
					new google.maps.Size( 25, 25 ),
					new google.maps.Point( 0, 0 ),
					new google.maps.Point( parseInt(12.5), parseInt(12.5) ));
				
				// Llenamos la Informacion del InfoWindow
				// Si el Tab es Línea
				html_tab1 	= infowindow_div_linea_tax_buscador;
				html_tab1	= html_tab1.replace("%%element.id_linea%%",				lista_id_linea[j]);
				html_tab1	= html_tab1.replace("%%element.nombre%%",				lista_nombre[j]);
				
				html_tab1	= html_tab1.replace("%%element.fecha_apertura%%",		lista_fecha_apertura[j]);
				html_tab1 	= html_tab1.replace("%%element.unidades%%",				lista_unidades[j]);
				
				// Si el Tab es Empresa
				html_tab2 	= infowindow_div_datos_emp_buscador;
				html_tab2 	= html_tab2.replace("%%element.id_linea%%",				lista_id_linea[j]);
				
				html_tab2 	= html_tab2.replace("%%element.rif%%",					lista_rif[j]);
				html_tab2 	= html_tab2.replace("%%element.razon_social%%",			lista_razon_social[j]);
				
				// Configuramos el infoBubble
				var infoBubble = new InfoBubble({
					maxWidth: 300,
					minWidth: 300,
					maxHeight: 200,
					minHeight: 200,
					map: map_buscador_tax,
					shadowStyle: 1,
					padding: 5,
					backgroundColor: '#FFFFFF',
					borderRadius: 15,
					arrowSize: 20,
					borderWidth: 2,
					borderColor: color_menu,
					disableAutoPan: false,
					hideCloseButton: false,
					arrowPosition: 50,
					arrowStyle: 0
				});
				
				// Agregamos los Tabs al InfoWindow
				infoBubble.addTab('Línea', 			html_tab1);
				infoBubble.addTab('Empresa', 		html_tab2);
				
				// Creamos el Marcador
				var marker = new google.maps.Marker({
					position: point,
					map: map_buscador_tax,
					title: lista_nombre[j],
					icon: image,
					infoBubblez: infoBubble
				});
				markersArray.push(marker);
				
				// Creamos el Evento
				google.maps.event.addListener(marker, "click", function () {
					if (!(this.infoBubblez).isOpen()) {
						if ( infoBubbleTurnob != null ) {
							infoBubbleTurnob.close();	
						}
						(this.infoBubblez).open(map_buscador_tax, this);
						infoBubbleTurnob = this.infoBubblez;
					}
				});
			}
		}
		
		if ( h_ls_tabla_tax != "" ) {
			document.getElementById("h_ls_tabla_tax").value = h_ls_tabla_tax;
		} else {
			document.getElementById("h_ls_tabla_tax").value = "";
		}

		// Llamamos al AJAX que crea la Tabla con h_ls_tabla_tax como parametro
		xajax_generar_tabla_tax_xajax(h_ls_tabla_tax, opcion);
	} else {
		alert("ATENCIÓN: No se encontraron Líneas de Táxis en el Área seleccionada.");
	}
}


// =================================================================================================================
// ===================================== ELIMINA LOS MARCADORES SOBRE EL MAPA ======================================
// =================================================================================================================

function clearOverlays() {
	if ( markersArray ) {
		for ( i in markersArray ) {
			markersArray[i].setMap(null);
		}
	}
}